package cn.tedu.tmall.front.mall.service;

import cn.tedu.tmall.common.consts.data.MallConsts;
import cn.tedu.tmall.common.pojo.authentication.CurrentPrincipal;
import cn.tedu.tmall.front.mall.pojo.vo.CartListItemVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface ICartService extends MallConsts {
    /**
     * 将商品添加到购物车
     *
     * @param currentPrincipal 当事人
     * @param goodsId          商品ID
     * @param goodsNum         商品数量
     */
    void addNew(CurrentPrincipal currentPrincipal, Long goodsId, Integer goodsNum);


    /**
     * 查询购物车列表
     *
     * @param currentPrincipal 当事人
     * @return 购物车列表
     */
    List<CartListItemVO> list(CurrentPrincipal currentPrincipal);

    /**
     * 将购物车中商品的数量增加1
     *
     * @param currentPrincipal 当事人
     * @param goodsId          商品ID
     * @return 新的数量
     */
    Integer increaseNum(CurrentPrincipal currentPrincipal, Long goodsId);


    /**
     * 将购物车中商品的数量减少1
     *
     * @param currentPrincipal 当事人
     * @param goodsId          商品ID
     * @return 新的数量
     */
    Integer reduceNum(CurrentPrincipal currentPrincipal, Long goodsId);


    /**
     * 删除购物车中的商品
     *
     * @param currentPrincipal 当事人
     * @param goodsId          商品ID
     */
    void delete(CurrentPrincipal currentPrincipal,Long goodsId);
}
